home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / Chip Temmuz 2004.iso / program / antispam / RazorAgent_SDK / razor-agents-sdk-2.03.exe / URI-1.19 / t / file.t < prev    next >
Encoding:
Text File  |  2002-04-17  |  2.7 KB  |  78 lines

  1. use URI::file;
  2.  
  3. @tests =  (
  4. [ "file",          "unix",       "win32",         "mac" ],
  5. #----------------  ------------  ---------------  --------------
  6. [ "file://localhost/foo/bar",
  7.                "!/foo/bar",  "!\\foo\\bar",   "!foo:bar", ],
  8. [ "file:///foo/bar",
  9.                "!/foo/bar",  "!\\foo\\bar",   "!foo:bar", ],
  10. [ "file:/foo/bar", "/foo/bar",   "\\foo\\bar",    "foo:bar", ],
  11. [ "foo/bar",       "foo/bar",    "foo\\bar",      ":foo:bar",],
  12. [ "file://foo/bar","!//foo/bar", "\\\\foo\\bar",  "!foo:bar"],
  13. [ "file://a:/",    "!//a:/",     "!A:\\",          undef],
  14. [ "file:/",        "/",          "\\",             undef],
  15. [ "file://A:relative/", "!//A:relative/", "A:",    undef],
  16. [ ".",             ".",          ".",              ":"],
  17. [ "..",            "..",         "..",             "::"],
  18. [ "%2E",           "!.",          "!.",            ":."],
  19. [ "../%2E%2E",     "!../..",      "!..\\..",       "::.."],
  20. );
  21. if ($^O eq "MacOS") {
  22. @extratests = (
  23. [ "../..",        "../..",         "..\\..",           ":::"],
  24. [ "../../",       "../../",        "..\\..\\",         "!:::"],
  25. [ "file:./foo.bar", "!./foo.bar",    "!.\\foo.bar",       "!:foo.bar"],
  26. [ "file:/%2Ffoo/bar", undef,      undef,           "/foo:bar"],
  27. [ "file:/.%2Ffoo/bar", undef,      undef,           "./foo:bar"],
  28. [ "file:/fee/.%2Ffoo%2Fbar", undef,      undef,           "fee:./foo/bar"],
  29. [ "file:/.%2Ffoo%2Fbar/", undef,      undef,           "./foo/bar:"],
  30. [ "file:/.%2Ffoo%2Fbar", undef,      undef,           "!./foo/bar:"],
  31. [ "file:/%2E%2E/foo",   "!/../foo",   "!\\..\\foo" , "..:foo"],
  32. [ "file:/bar/%2E/foo", "!/bar/./foo",  "!\\bar\\.\\foo", "bar:.:foo"],
  33. [ "file:/foo/../bar",  "/foo/../bar",  "\\foo\\..\\bar", "foo::bar"],
  34. [ "file:/a/b/../../c/d",  "/a/b/../../c/d",  "\\a\\b\\..\\..\\c\\d", "a:b:::c:d"],
  35. );
  36.   push(@tests,@extratests);
  37. }
  38.  
  39. @os = @{shift @tests};
  40. shift @os;  # file
  41.  
  42. my $num = @tests;
  43. print "1..$num\n";
  44.  
  45. $testno = 1;
  46.  
  47. for $t (@tests) {
  48.    my @t = @$t;
  49.    my $file = shift @t;
  50.    my $err;
  51.  
  52.    my $u = URI->new($file, "file");
  53.    my $i = 0;
  54.    for $os (@os) {
  55.        my $f = $u->file($os);
  56.        my $expect = $t[$i];
  57.        $f = "<undef>" unless defined $f;
  58.        $expect = "<undef>" unless defined $expect;
  59.        my $loose;
  60.        $loose++ if $expect =~ s/^!//;
  61.        if ($expect ne $f) {
  62.            print "URI->new('$file', 'file')->file('$os') ne $expect, but $f\n";
  63.            $err++;
  64.        }
  65.        if (defined($t[$i]) && !$loose) {
  66.        $u2 = URI::file->new($t[$i], $os);
  67.            unless ($u2->as_string eq $file) {
  68.               print "URI::file->new('$t[$i]', '$os') ne $file, but $u2\n";
  69.               $err++;
  70.            }
  71.        }
  72.        $i++;
  73.    }
  74.    print "not " if $err;
  75.    print "ok $testno\n";
  76.    $testno++;
  77. }
  78.